package com.panda.sports.manager.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.panda.sports.manager.utils.TimeUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.beans.BeanUtils;

/**
 * @author dorich
 * @date 2019-08-09 17:18:59
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("standard_match_info")
public class StandardMatchInfo extends Model<StandardMatchInfo> {
    private static final long serialVersionUID = 1L;

    /**
     * id。id
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * 体育种类id。运动种类id 对应sport.id
     */
    private Long sportId;
    /**
     * 标准联赛 id。对应联赛 id  对应  standard_sport_tournament.id
     */
    private Long standardTournamentId;
    /**
     * 联赛 级别。 对应标准联赛表的联赛级别
     */
    private Integer tournamentLevel;
    /**
     * 第三方比赛id。第三方比赛在 表 third_match_info 中的id
     */
    private Long thirdMatchId;
    /**
     * 滚球操盘组的id。滚球盘操盘组id
     */
    private Integer liveOperateGroupId;
    /**
     * 赛前操盘组的id。赛前盘操盘组id
     */
    private Integer preMatchOperateGroupId;
    /**
     * 操盘组负责人id。操盘责任人id
     */
    private Integer operatorLiable;
    /**
     * 距离开赛时间。 单位：秒
     */
    private Integer secondsMatchStart;
    /**
     * 是否支持赛前盘。是否支持赛前盘。取值为 1  或  0 。1=支持；0=不支持
     */
    private Integer preMatchSupport;
    /**
     * 是否支持滚球。取值为 1  或  0 。1=支持；0=不支持
     */
    private Integer liveOddSupport;
    /**
     * 当前比赛共有几节。当前比赛共有几节
     */
    private Integer matchPeriodNumber;
    /**
     * 比赛开盘标识。0：未开盘；1：开盘；2：关盘；3：封盘；开盘后用户可下注
     */
    private Integer operateMatchStatus;
    /**
     * 比赛开始时间。比赛开始时间 UTC时间
     */
    private Long beginTime;
    /**
     * 比赛结束时间。当前事件结束时间，比如：足球正式宣布结束的时间
     */
    private Long endTime;
    /**
     * 比赛是否被激活。1：激活；0：未激活。 激活的比赛可以进行下注。
     */
    private Integer active;
    /**
     * 上次锁盘时间。UTC 。 仅做记录，不做下注判断。
     */
    private Long lastLockTime;
    /**
     * 上次开盘时间。UTC 。 仅做记录，不做下注判断。
     */
    private Long lastOpenTime;
    /**
     * 是否支持串关。1 支持串关;0 不支持串关
     */
    private Integer canParlay;
    /**
     * 赛前盘下注状态。赛前盘：1 可下注；0不可下注；用于数据源控制下注状态
     */
    private Integer preMatchBetStatus;
    /**
     * 滚球下注状态。滚球中使用：1 可下注；0不可下注；用于数据源控制下注状态
     */
    private Integer liveOddsBetStatus;
    /**
     * 是否为中立场。取值为 0  和1  。  1:是中立场，0:非中立场。操盘人员可手动处理
     */
    private Integer neutralGround;
    /**
     * 对用户可见。1：可见； 0：不可见
     */
    private Integer visible;
    /**
     * 比赛是否结束。0: 未结束； 1：结束。（比赛彻底结束，双方不再有加时赛，点球大战，且裁判宣布结束）
     */
    private Integer matchOver;
    /**
     * 标准赛事编码。用于管理的赛事id
     */
    private Long matchManageCode;
    /**
     * 谁先晋级。 取值： home away both none 。home:主场队；away:客场队；both: 都晋级；none ：都没晋级
     */
    private String whoAdvance;
    /**
     * 先开球的球队。 取值： home away。home:主场队；away:客场队。
     */
    private String whoKickOff;
    /**
     * 风控服务商编码。sr bc pa 等。详见 数据源表 data_source中的code字段
     */
    private String riskManagerCode;
    /**
     * 数据来源编码。指的是当前赛事使用哪个数据供应商的数据。使用该数据，则使用该风控
     */
    private String dataSourceCode;
    /**
     * 关联数据源编码列表。 数据样例：SR,BC,188; SR,188; BC,188
     */
    private String relatedDataSourceCode;
    /**
     * 赛事来源编码。赛事由那个数据商的第三方数据导致创建。sr bc pa 等。详见 数据源表 data_source中的code字段
     */
    private String matchSourceCode;
    /**
     * 第三方赛事原始id。该厂比赛在第三方数据供应商中的id。比如： SportRadar 发送数据时，这场比赛的ID。
     */
    private String thirdMatchSourceId;
    /**
     * 比赛名称编码。比赛名称编码. 用于多语言
     */
    private Long nameCode;
    /**
     * 比分。 仅显示 90分钟内的比分。
     */
    private String score;
    /**
     * 比赛阶段id。取自基础表 ：match_status.id
     */
    private Long matchPeriodId;
    /**
     * 备注。
     */
    private String remark;
    /**
     * 创建时间。
     */
    private Long createTime;
    /**
     * 修改时间。
     */
    private Long modifyTime;

    public StandardMatchInfo() {
        this.modifyTime = TimeUtils.millsSecondsEast8ZoneGmt();
    }

    public StandardMatchInfo(StandardMatchInfo m) {
        super();
        this.modifyTime = TimeUtils.millsSecondsEast8ZoneGmt();
        BeanUtils.copyProperties(m, this);
    }

}
